iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
1

引言

終於,我們要正式進入3D投影成像的內容了~
我們會由基礎觀念漸漸實作到C語言上,首先最一開始要談的就是投影,這部分我在準備文中有稍微提過,大家可以去看一下:https://ithelp.ithome.com.tw/articles/10212887


3D投影

先來看看維基大神的說法:

3D投影是將3D空間中的點映射2D平面上的方法。由於目前絕大多數圖形數據的顯示方式仍是2D的,因此3D投影的應用相當廣泛,尤其是在計算機圖形學,工程學和工程製圖中。

來源:https://zh.wikipedia.org/wiki/%E4%B8%89%E7%BB%B4%E6%8A%95%E5%BD%B1

大家可以先看我用粗體字畫起來的部分,其實所謂3D的投影,就是為了滿足現代科技最普遍的的2D平面成像技術,而使用的一種方式來模擬三維物體的顯示。可以想像你把一根蘿蔔突破物理限制的壓扁(?,貼到一張圖畫紙中XD

三維的東西既然在三維空間中,當然就不可能完整存在於二維的圖畫紙中。因此我們需要一種特別的方法來模擬、想像它在二維平面中的樣子,而這個技術就是投影


三維投影到二維

三維空間的物體投影到二維平面是最常見的了。講個不管是誰都一定看過的現象,影子,而這也是投影名稱的由來吧,你在牆上的影子,可以想成你這個三維物體二維牆面投影。如果牆面是電腦螢幕,影子就好比是模擬成你的平面角色,只是影子沒有光影、色彩、凹凸等細節,頂多擁有輪廓,但我想這是最好的想像方式了~

以下我畫個示意圖給大家看:
https://ithelp.ithome.com.tw/upload/images/20190918/20111429XIVGuVOL3Q.png

是不是很像影子的概念呢? 差別在於圖中有將稜線畫出來,多了一些細節。

大家也可以仔細觀察一下哦,圖中灰色的投影,是不是只像是此角椎的其中一個觀察角度而已呢?
這部分也是相當重要的,既然三維物體已經被「委曲求全」在二維空間中了,二維空間的它只會有一個方向的角度資訊被記錄下來哦,在邏輯上是相當通順的,既然三維比二維多一維,當然紀錄的資訊要多得多囉!


實際上做的的第一步

之後我們實作的3D引擎真正做的第一步,大概是:

  1. 定義出物體三維座標
  2. 將物體三維座標轉成二維座標
  3. 將此轉換後的二維座標繪製到螢幕上

所以第一個門檻,在「將物體三維座標轉成二維座標」這件事!


明天我們會使用線性代數投影的知識,來跨過這道門檻!


上一篇
[11屆鐵人賽Day3] Windows API簡介—介紹主題會使用到的部分
下一篇
[11屆鐵人賽Day5] 3D投影—投影公式
系列文
若沒有遊戲引擎、合作夥伴...做得出遊戲嗎? 不試試看不知道吧? [使用C語言]30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言